// 定义一个全局变量存储验证码
let secret_code = ''
const app = getApp()

Page({
  data: {
    // 倒计时是否可用
    countDownVisible: false,
    // 倒计时初始时间对象
    timeData: {},
    // 手机号
    mobile: '',
    // 验证码
    code: '',
    // 跳转地址
    redirectURL: '',
  },

  onLoad({ redirectURL }) {
    // console.log(redirectURL)
    this.setData({
      redirectURL,
    })
  },

  // 1. 倒计时
  countDownChange(ev) {
    this.setData({
      timeData: ev.detail,
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },

  // 2. 获取短信验证码
  async getCode() {
    // 2.1 校验手机号
    if (!wx.utils.verifyMobile(this.data.mobile)) return
    // 2.2 调用获取短信验证码接口
    const { code, data } = await wx.http({
      url: '/code',
      data: {
        mobile: this.data.mobile,
      },
    })
    // 2.3 判断
    if (code !== 10000) return wx.utils.toast('验证码获取失败')
    // console.log(data)
    wx.utils.toast('验证码获取成功')
    // 2.4 开启倒计时
    this.setData({
      countDownVisible: true,
    })
    // 2.5. 把验证码存储到全局变量
    secret_code = data.code
  },

  // 3. 把验证码存储到剪贴板
  setCode() {
    wx.setClipboardData({
      data: secret_code,
    })
  },

  // 4. 登录/注册操作
  async submit() {
    // 4.1 登录前校验
    if (!wx.utils.verifyMobile(this.data.mobile)) return
    if (!wx.utils.verifyCode(this.data.code)) return
    // 4.2 调用登录接口
    const { code, data } = await wx.http.post('/login', { mobile: this.data.mobile, code: this.data.code })
    if (code !== 10000) return wx.utils.toast('验证码错误')
    wx.utils.toast('登录成功~')
    // 4.3 把token和refresh_token存储到全局和本地
    app.setToken(data.token, data.refreshToken)

    // console.log(this.data.redirectURL)

    // 方案1:
    // 4.5 判断是否去我的页面(tabBar页面) 要用switchTab跳转
    if (this.data.redirectURL === '/pages/my/index') {
      return wx.switchTab({
        url: this.data.redirectURL,
      })
    }

    // 4.4 跳转到来之前的页面
    wx.redirectTo({
      url: this.data.redirectURL || '/pages/index/index',
    })

    // 方案2:
    // wx.reLaunch({
    //   url: this.data.redirectURL || '/pages/index/index',
    // })
  },
})
